'use strict'

/* requrie.config在使用require前注册

  使用requireJs的好处是：
  (1) 只执行被加载的那一个模块，没被要求加载的模块不会执行
  (2) 声明式地管理模块间的依赖顺序，依赖关系比较明确
  (3) 在单页面应用里，被requirejs加载的模块会一直缓存在内存中，
      以后无论进行多少次加载都不会发送网络请求，并且模块也不会再进行初始化
  (4) 一个js文件就是一个功能点，这样就以模块化方式搭建一个积木，方便多人协作开发，
      每个开发者设计到的功能点放在一个文件中，分工明确
  (5) requirejs采用lazyload的方式（后加载）加载js脚本，这样的加载方式大大的提高了性能

 requireJs的使用场景：
    上面其实说了一件事情，就是当你的js都是自己写的，而且有很多js的时候rj很适用，
    基本上就类似用Java开发一个项目了，文件太多，所以需要分package和import
 【rj之后事件都需要绑定】

 1.使用rj之后，js都是后加载的，如果你在页面直接onclick=一个方法，

 那么抱歉，这个方法找不到，所有的js方法都得写到rj中，

 也就是普通的onclick，你都得换成$(document).on()的形式，

 假设你有很多事件。。。

 有人说事件委托，然后在方法内判断，想想都头大。。

 2.插件

 很多插件都是不支持amd或cmd的，

 也就是使用了rj或者seajs之后，

 如果要使用这些插件，

 那你得自己把插件修改为符合amd或cmd规范的，

 修改一两个还好，如果有很多插件。。

 3.其实也就这些。


 【总结】

 1.大量js，或前端插件完全自己开发，或nodejs开发的场景适合rj

 2.中小公司，喜欢使用现有插件的，慎用
*/
require.config({
    // 不论写不写baseUrl，requireJs会找到当前main.js的直接父路径（这里是 pannel/js），
    // 如果不写baseUrl，paths选项的每个属性值开头默认加上 pannel/js/，
    // 如果写上baseUrl，如 ./，先找到 pannel/js/ 的上一级路径，即pannel，再
    // paths选项的每个属性值开头加上 pannel

    //baseUrl: 'js', // 必须加上main.js直接父目录，即js/
    paths: { // 指定模块路径
        // 默认情况下，require.js假定依赖模块和main.js在同一目录下
        jquery: 'libs/jquery-3.2.1.min',
        tools: 'libs/tools',
        menusConfig: 'config/menus',
        renderMenus: 'libs/renderMenus',
        routes: 'config/routes',
        loadTemplate: 'libs/loadTemplate',
        listenRoute: 'libs/listenRoute',
        test: '../test/test'
    }
})

// （1）加载并执行模块，都加载完后执行回调函数
// （2）被依赖的文件可以没有return，这样只会加载并执行依赖文件
// （3）不在paths选项内定义依赖文件的别名，任然可以在require内直接使用 相对路径 找到被依赖文件
// （4）在其他js中使用require(['./views/goods'], () => {})加载依赖时，任然相对于main.js所在路径
//      来配置被依赖文件的相对路径（此处是./views/goods）
//
require(['renderMenus', 'listenRoute', 'test'])